package com.baayso.bms2.core.entity;

import java.io.Serializable;

import javax.persistence.Column;
import javax.persistence.GeneratedValue;
import javax.persistence.Id;
import javax.persistence.MappedSuperclass;

import org.hibernate.annotations.GenericGenerator;

/**
 * 统一定义id的entity基类。
 * 
 * 基类统一定义id的属性名称、数据类型、列名映射及生成策略。<br>
 * Oracle需要每个Entity独立定义id的SEQUCENCE时，不继承于本类而改为实现一个Idable的接口。
 * 
 * @author calvin
 * @author ChenFangjie(2015年9月20日 上午11:04:24)
 * 
 * @since 1.0.0
 * 
 * @version 1.0.0
 * 
 */
@MappedSuperclass // JPA 基类的标识
public abstract class IdEntity implements Serializable {

    private static final long serialVersionUID = 1901252268078510154L;

    @Id
    // @GeneratedValue(strategy = GenerationType.IDENTITY)
    @GeneratedValue(generator = "system_uuid")
    @GenericGenerator(name = "system_uuid", strategy = "uuid")
    @Column(length = 36)
    protected String id;

    public String getId() {
        return id;
    }

    public void setId(String id) {
        this.id = id;
    }

}
